// 文件相关的路由表
let fs = require('fs')
let path = require('path')
let template = require('art-template')
let multer = require('multer')

// 创建路由表(空表)
let router = require('express').Router()

// 向路由表中添加内容:

// 生成接收器
// storage: 仓库信息
let upload = multer({
    limits: {
        // 限制上传文件最大为 500kb
        fileSize: 1024 * 500
    },
    fileFilter: function (req,file,callback){
        // 限制上传文件为图片
        let reg = /\.(png|jpe?g|gif|svg)$/
        if (reg.test(file.originalname)) {
            // 上传文件后缀符合规则
            callback(null,true)// 接收文件
        } else {
            // 上传文件后缀不符合规则
            callback(null,false)// 拒收文件
        }
    },
    // 生成一个仓库信息(详细配置)
    storage: multer.diskStorage({
        // 设置存储文件的目录
        destination: function (req,file,callback){
            // callback 回调函数,用于设置文件的存储目录
            callback(null,'./www/uploads')
        },
        // 设置上传文件的名称
        filename: function (req,file,callback){
            // 为上传的文件生成随机名字(文件名和后缀名)
            let filen = 'upload_' + Date.now() + '_' + parseInt(Math.random()*1000000)
            // filen = 'upload_16574567456_463273'
            let extn = path.extname(file.originalname)
            // '.png'
            callback(null,filen+extn)
        }
    })
})

let uploadCallback = upload.single('upfile')// 执行后返回一个函数

/**
 * @api {post} /file/upload 上传图片接口
 * @apiGroup file
 *
 * @apiParam {String} upfile 上次图片的name值
 *
 * @apiSuccessExample 返回数据示例:
 * {
 *     "code": 1,
 *     "msg": "上传成功",
 *     "imgurl": "http://localhost:8080/static/uploads/xxx.png"
 * }
 */
router.post('/upload',(req,res)=>{// 请求处理函数
    uploadCallback(req,res,(err)=>{// 上传完成时执行
        if (err) {
            // 上传的文件大小超出了最大值
            return res.send({"code":-1,"msg":"上传图片不能大于500kb"})
        }
        if (!req.file) {
            // 上传文件类型不符合要求,被拒收了
            return res.send({"code":-2,"msg":"只能上传图片类型的文件"})
        }
        // 响应前端
        let url = 'http://localhost:8080/static/uploads/'+req.file.filename
        res.send({"code":1,"msg":"上传成功","imgurl":url})
    })
})


// 导出路由表
module.exports = router
